package com.gzhryc.pay.adaptation.weixin.msg.normal;

import com.gzhryc.pay.adaptation.weixin.msg.NotifyPayAmountItem;
import com.gzhryc.pay.adaptation.weixin.msg.NotifyPayPromotionDetailItem;
import com.gzhryc.pay.adaptation.weixin.msg.PayerItem;
import com.gzhryc.pay.adaptation.weixin.msg.WXPayAPIResponse;

import java.io.Serializable;
import java.util.List;

public class WXPayNormalOrderResponse extends WXPayAPIResponse {

    private static final long serialVersionUID = 1L;

    private String appid;
    private String mchid;
    private String out_trade_no;    //商户订单号
    private String transaction_id;  //微信支付订单号
    /**
     * 枚举值：
     * JSAPI：公众号支付
     * NATIVE：扫码支付
     * APP：APP支付
     * MICROPAY：付款码支付
     * MWEB：H5支付
     * FACEPAY：刷脸支付
     */
    private String trade_type;      //交易类型
    /**
     * 枚举值：
     * SUCCESS：支付成功
     * REFUND：转入退款
     * NOTPAY：未支付
     * CLOSED：已关闭
     * REVOKED：已撤销（付款码支付）
     * USERPAYING：用户支付中（付款码支付）
     * PAYERROR：支付失败(其他原因，如银行返回失败)
     */
    private String trade_state;     //交易状态
    private String trade_state_desc;    //交易状态描述
    private String bank_type;       //付款银行
    private String attach;
    private String success_time;
    private PayerItem payer;
    private NotifyPayAmountItem amount;
    private SceneInfoItem scene_info;
    private List<NotifyPayPromotionDetailItem> promotion_detail;

    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getMchid() {
        return mchid;
    }

    public void setMchid(String mchid) {
        this.mchid = mchid;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getTrade_type() {
        return trade_type;
    }

    public void setTrade_type(String trade_type) {
        this.trade_type = trade_type;
    }

    public String getTrade_state() {
        return trade_state;
    }

    public void setTrade_state(String trade_state) {
        this.trade_state = trade_state;
    }

    public String getTrade_state_desc() {
        return trade_state_desc;
    }

    public void setTrade_state_desc(String trade_state_desc) {
        this.trade_state_desc = trade_state_desc;
    }

    public String getBank_type() {
        return bank_type;
    }

    public void setBank_type(String bank_type) {
        this.bank_type = bank_type;
    }

    public String getAttach() {
        return attach;
    }

    public void setAttach(String attach) {
        this.attach = attach;
    }

    public String getSuccess_time() {
        return success_time;
    }

    public void setSuccess_time(String success_time) {
        this.success_time = success_time;
    }

    public PayerItem getPayer() {
        return payer;
    }

    public void setPayer(PayerItem payer) {
        this.payer = payer;
    }

    public NotifyPayAmountItem getAmount() {
        return amount;
    }

    public void setAmount(NotifyPayAmountItem amount) {
        this.amount = amount;
    }

    public SceneInfoItem getScene_info() {
        return scene_info;
    }

    public void setScene_info(SceneInfoItem scene_info) {
        this.scene_info = scene_info;
    }

    public List<NotifyPayPromotionDetailItem> getPromotion_detail() {
        return promotion_detail;
    }

    public void setPromotion_detail(List<NotifyPayPromotionDetailItem> promotion_detail) {
        this.promotion_detail = promotion_detail;
    }

    public static class SceneInfoItem {

        private String device_id;

        public String getDevice_id() {
            return device_id;
        }

        public void setDevice_id(String device_id) {
            this.device_id = device_id;
        }
    }
}
